home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
001a
/
com_and3.zip
/
BBS.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1989-10-03
|
22KB
|
1,300 lines
SET BAUD 1200
SET PARITY NONE
SET DATA 8
SET STOP 1
SET PORT COM2
SET MASK ON
SET ASCII UP_LF LF
S2 = "\BBS"
S3 = "\BBS\FILES"
S4 = "\BBS\MAIL"
S5 = "\BBS\BULLETIN"
SET ALARM OFF
SET ATIME 1
CHDIR S2
SET DLDIR S3
LEGEND "Scripted BBS mode. Press ESC to terminate or to CHAT."
TRANSMIT "~~~+++~~~ATZ^M"
ON ESCAPE GOSUB Chat
CLOG "* BBS script loaded"
GOTO Restart
Chat:
MESS "^M^JDo you wish to terminate? (Y/N) "
GET S0 2
IF FIND S0 "Y"
HANGUP
CLOG "* BBS script terminated"
EXIT
ENDIF
IF NOT FLAG(3)
RETURN
ENDIF
MESS "^M^JDo you wish to chat with the caller (Y/N) "
GET S0 2
IF FIND S0 "N"
RETURN
ENDIF
TRAN "^M^J"
TRAN "^M^JOperator initiated chat mode..."
Chat_Loop:
MESS "^M^JSYSOP: "
GET S0 80
IF NULL S0
MESS "Continue? (Y/N) "
GET S0 2
IF FIND S0 "N"
TRAN "^M^JChat terminated by SYSOP"
RETURN
ENDIF
S0 = " "
ENDIF
TRAN "^M^JSYSOP: "
TRAN S0
MESS "Caller: "
TRAN "^M^JCaller: "
GOSUB Read_Comm
IF FLAG(0)
MESS "^M^JCaller disconnected"
RETURN
ENDIF
GOTO Chat_Loop
Limit_Time:
IF FLAG(1)
SET FLAG(0) OFF
RETURN
ENDIF
TIME S9 1
N19 = S9(0:1)*60+S9(3:4)
N18 = S6(0:1)*60+S6(3:4)
IF GT N18 N19
N19 = N19+1440
ENDIF
N19 = N19-N18
IF GT N19 N0
TRAN "^M^JYour alotted time has expired..."
TRAN "^M^JYou are being disconnected."
SET FLAG(0) ON
RETURN
ENDIF
SET FLAG(0) OFF
RETURN
Read_Comm:
IF FLAG(3)
GOSUB Limit_Time
IF FLAG(0)
RETURN
ENDIF
ENDIF
RGET S9 80 180
IF NOT CONNECTED
GOTO Disconnect
ENDIF
IF NOT SUCCESS
GOTO Timeout
ENDIF
FIND S9 "NO CARRIER"
IF FOUND
GOTO Disconnect
ENDIF
SET FLAG(0) OFF
RETURN
Timeout:
TRAN "^M^J... autodisconnect due to timeout^M^J"
MESSAGE "^M... autodisconnect due to timeout"
GOTO RComm_Exit
Disconnect:
MESSAGE "^MCaller disconnected"
RComm_Exit:
SET FLAG(0) ON
RETURN
Display_Limit:
IF FLAG(1)
RETURN
ENDIF
TIME S9 1
N19 = S9(0:1)*60+S9(3:4)
N18 = S6(0:1)*60+S6(3:4)
IF GT N18 N19
N19 = N19+1440
ENDIF
N19 = N0-(N19-N18)
STRFMT S9 "^M^J(%d minutes remaining)" N19
TRAN S9
RETURN
Logon:
FOPENI "BBS-User" TEXT
IF NOT SUCCESS
SET FLAG(0) ON
RETURN
ENDIF
Logon_Loop:
READ S9 80 N19
IF EOF
FCLOSEI
SET FLAG(0) ON
RETURN
ENDIF
FIND S9(0:0) "<"
IF FOUND
GOTO Logon_Loop
ENDIF
SWITCH S1
CASE S9(0:15)
GOTO Logon_OK
ENDCASE
ENDSWITCH
GOTO Logon_Loop
Logon_OK:
SET FLAG(1) OFF
SET FLAG(3) ON
N0 = 60
FIND S9(16:16) "P"
IF FOUND
SET FLAG(1) ON
N0 = 3000
ENDIF
TIME S6 1
FCLOSEI
SET FLAG(0) OFF
RETURN
Disp_File:
ISFILE S8
IF NOT SUCCESS
TRAN S9
RETURN
ENDIF
TRAN "^M^J"
SENDFILE ASCII S8
TRAN "^M^J"
RETURN
Left_Justify:
LENGTH S9 N19
LJ_Loop:
IF NOT NULL S9(0:0)
RETURN
ENDIF
S9 = S9(1:79)
DEC N19
IF GT N19 0
GOTO LJ_Loop
ENDIF
RETURN
Log_Item:
FOPENO "BBS-LOG" TEXT APPEND
IF NOT SUCCESS
RETURN
ENDIF
DATE S8
CONCAT S9(59) S8
TIME S8 1
CONCAT S9(70) S8
WRITE S9
WRITE "^M"
FCLOSEO
RETURN
Copy_Text:
N19 = 0
Copy_Loop:
INC N19
S9 = N19 & ": ^H"
TRAN S9
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
LENGTH S9 N18
IF NOT ZERO N18
PRESERVE S9
WRITE S9
IF NOT SUCCESS
TRAN "Error recording text - please try later^M^J"
RETURN
ENDIF
WRITE "!"
GOTO Copy_Loop
ELSE
TRAN "^M^JComplete? (Y/N) "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
IF NOT FIND S9 "Y"
WRITE "!"
GOTO Copy_Loop
ENDIF
ENDIF
RETURN
Restart:
CHDIR S2
SET RECHO OFF
SET RDISP ON
CLEAR
LOCATE 0,0
SET FLAG(1) OFF
SET FLAG(2) OFF
SET FLAG(3) OFF
MESSAGE "^MWaiting..."
Pause 3
HANGUP
PAUSE 3
TRANSMIT "ATE0Q0V1X1S0=2 S7=30 S9=10^M"
Wait_Connect:
RGET S9 80 180
IF NOT SUCCESS
GOTO Wait_Connect
ENDIF
FIND S9 "NO CARRIER"
IF FOUND
GOTO Restart
ENDIF
FIND S9 "CONNECT"
IF NOT FOUND
GOTO Wait_Connect
ENDIF
GOSUB AutoBaud
S9 = "^M^JThe Flying Scotsman greets you!! ^M^J"
S8 = "BBS-Welc"
GOSUB Disp_File
SET RECHO ON
N10 = 0
ID_Query:
TRANSMIT "^MEnter your ID (or enter GUEST): "
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NULL S9
GOTO ID_Query
ENDIF
SWITCH S9
CASE "GUEST"
GOSUB Register
GOTO Exit
ENDCASE
ENDSWITCH
S1 = S9(0:7)
UPPER S1
Password_Query:
TRANSMIT "^MEnter your password: "
SET RECHO OFF
SET RDISPLAY OFF
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
SET RECHO ON
SET RDISPLAY ON
IF NULL S9
GOTO Password_Query
ENDIF
S1(8:79) = S9(0:7)
GOSUB Logon
IF NOT FLAG(0)
S9 = "Logon: "
CONCAT S9(7) S1(0:7)
GOSUB Log_Item
SET FLAG(2) OFF
S1 = S1(0:7)
CLOG "* BBS logon: "*S1
GOTO Main_Prompt
ENDIF
TRAN "Unrecognized ID/Password^M^J"
INC N10
IF GE N10 3
TRAN "You have exceeded the number of tries allowed for logon^M^JBye...^M^J"
MESS "^M^JLogon attempts failed^M^J"
GOTO Exit
ENDIF
GOTO ID_Query
Main_Prompt:
MESS "^M^JMain prompt "
GOSUB Display_Limit
IF NOT FLAG(1)
S9 = "^M^JC)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
S8 = "BBS-NpMn"
ELSE
S9 = "^M^JP)rivileged, C)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
S8 = "BBS-PrMn"
ENDIF
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
S9 = S9(0:0)
SWITCH S9
CASE "A"
GOTO Alarm
ENDCASE
CASE "M"
GOTO Mail_Command
ENDCASE
CASE "F"
GOTO File_Command
ENDCASE
CASE "C"
GOTO Comment
ENDCASE
CASE "B"
GOTO Bull_Command
ENDCASE
CASE "E"
TRAN "Ok... bye"
GOTO EXIT
ENDCASE
CASE "P"
IF FLAG(1)
GOTO Priv_Prompt
ENDIF
ENDCASE
ENDSWITCH
TRAN "^MCommand not recognized... try again^M"
GOTO Main_Prompt
EXIT:
MESS "^G"
CLOG "* BBS logoff"
GOTO Restart
Alarm:
SOUND 440 500
SOUND 493 100
SOUND 554 100
SOUND 587 100
SOUND 659 100
SOUND 739 100
SOUND 830 100
SOUND 880 500
GOTO Main_Prompt
Priv_Prompt:
MESS "^M^JPrivilege prompt "
GOSUB Display_Limit
S9 = "^M^JL)ist, P)ath, S)ubdir, D)OS, M)ain or E)xit: "
S8 = "BBS-PPMn"
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
S9 = S9(0:0)
SWITCH S9
CASE "L"
GOTO DIR
ENDCASE
CASE "S"
GOTO CHDIR
ENDCASE
CASE "P"
GOTO PATHLIST
ENDCASE
CASE "D"
GOTO Shell
ENDCASE
CASE "M"
GOTO Main_Prompt
ENDCASE
CASE "E"
TRAN "Ok... bye"
GOTO EXIT
ENDCASE
ENDSWITCH
TRAN "^MCommand not recognized... try again^M"
GOTO Priv_Prompt
CHDIR:
MESS "^M^JCHDIR Command "
TRAN "^MEnter the drive:subdirectory: "
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NOT NULL S9
CHDIR S9
SET FLAG(2) ON
ENDIF
GOTO Priv_Prompt
PATHLIST:
MESS "^M^JPathlist command "
TRAN "^M Working..."
DOS "TREED >\HOSTTEMP.TXT"
TRAN "^MUse control-S to suspend, control-Q to continue^M"
SENDFILE ASCII "\HOSTTEMP.TXT"
TRAN "^M"
DELETE "\HOSTTEMP.TXT"
GOTO Priv_Prompt
Shell:
MESS "^M^JDOS Command "
TRAN "^MWarning: this command may be used to invoke ANY COMMAND that"
TRAN "^MDOS can execute. If you load a program requiring keyboard "
TRAN "^Mentry, you lock yourself out and leave the board unusable."
TRAN "^M^J"
TRAN "^MEnter your command: "
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NULL S9
GOTO Priv_Prompt
ENDIF
IF FIND S9 "FORMAT"
TRAN "^M^JFormat commands are not allowed..."
GOTO Priv_Prompt
ENDIF
TRAN "^M Working..."
CONCAT S9 ">\HOSTTEMP.TXT"
DOS S9
TRAN "^MUse control-S to suspend, control-Q to continue^M"
SENDFILE ASCII "\HOSTTEMP.TXT"
TRAN "^M"
DELETE "\HOSTTEMP.TXT"
GOTO Priv_Prompt
Dir:
MESS "^M^JDirectory command "
TRAN "^M Working..."
DOS "DIR >\HOSTTEMP.TXT"
TRAN "^MUse control-S to suspend, control-Q to continue^M"
SENDFILE ASCII "\HOSTTEMP.TXT"
TRAN "^M"
DELETE "\HOSTTEMP.TXT"
GOTO Priv_Prompt
File_Command:
MESS "^M^JFile prompt "
SUBDIR S19
CHDIR S3
File_Prompt:
GOSUB Display_Limit
S9 = "^ML)ist, S)earch, U)pload, D)ownload, M)ain or E)xit: "
S8 = "BBS-FiMe"
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
S9 = S9(0:0)
SWITCH S9
CASE "D"
GOTO DOWNLOAD
ENDCASE
CASE "U"
GOTO UPLOAD
ENDCASE
CASE "L"
GOTO FILELIST
ENDCASE
CASE "S"
GOTO Search
ENDCASE
CASE "M"
CHDIR S19
GOTO Main_Prompt
ENDCASE
CASE "E"
TRAN "Ok... bye"
GOTO EXIT
ENDCASE
ENDSWITCH
TRAN "Invalid selection - try again^M"
GOTO FILE_Prompt
File_Query:
MESS "^M^JFname query "
TRAN "^MEnter the file name: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
RETURN
UPLOAD:
MESS "^M^JUpload from caller "
GOSUB File_Query
IF FLAG(0)
GOTO EXIT
ENDIF
IF NULL S9
GOTO File_Prompt
ENDIF
IF FIND S9 "\"
IF NOT FLAG(1)
TRAN "^MQualified file names are not permitted."
GOTO UPLOAD
ENDIF
ENDIF
IF ISDLFILE S9
TRAN "^MFile already exists"
GOTO UPLOAD
ENDIF
MESS "^M^JUlo Method prompt "
TRAN "^MW)xmodem, X)modem, Y)modem (X1k), Z)modem, or K)ermit: "
S8 = S9
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
S9 = S9(0:0)
TIME S10 1
SWITCH S9
CASE "W"
TRAN "^M^JBegin your transfer procedure..."
GETFILE WXMODEM S8
ENDCASE
CASE "X"
TRAN "^M^JBegin your transfer procedure..."
GETFILE XMODEM S8
ENDCASE
CASE "Y"
TRAN "^M^JBegin your transfer procedure..."
GETFILE YMODEM S8
ENDCASE
CASE "Z"
TRAN "^M^JBegin your transfer procedure..."
GETFILE ZMODEM
ENDCASE
CASE "K"
TRAN "^M^JBegin your transfer procedure..."
GETFILE KERMIT
ENDCASE
DEFAULT
TRAN "^MInvalid transfer selection"
GOTO EOTransfer
ENDCASE
ENDSWITCH
IF FIND S9 "\"
GOTO EOTransfer
ENDIF
TIME S11 1
N19 = S11(0:1)*60+S11(3:4)
N18 = S10(0:1)*60+S10(3:4)
IF GT N18 N19
N19 = N19+1440
ENDIF
N0 = N0+(N19-N18)
Describe:
TRAN "^M^JDescription: "
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NULL S9
TRAN "^M^JPlease leave something of a description"
GOTO Describe
ENDIF
FOPENO "BBS-File" TEXT APPEND
IF NOT SUCCESS
GOTO EOTransfer
ENDIF
DATE S0
S8 = S8 & " "
FSIZE S11 S8
S10 = S8(0:12) * S0(0:7) * S11(0:6) * S9
LENGTH S10 N19
WRITE S10 N19
WRITE "!"
FCLOSEO
GOTO EOTransfer
DOWNLOAD:
MESS "^M^JDownload to caller "
GOSUB File_Query
IF FLAG(0)
GOTO EXIT
ENDIF
IF NULL S9
GOTO File_Prompt
ENDIF
IF FIND S9 "\"
IF NOT FLAG(1)
TRAN "^MQualified file names are not permitted."
GOTO DOWNLOAD
ENDIF
ENDIF
ISFILE S9
IF NOT ISFILE S9
TRAN "^MFile doesn't exist"
GOTO DOWNLOAD
ENDIF
MESS "^M^JDlo Method prompt "
TRAN "^MW)xmodem, X)modem, Y)modem (X1k), Z)modem, K)ermit, or A)scii: "
S8 = S9
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
S9 = S9(0:0)
SWITCH S9
CASE "A"
SENDFILE ASCII S8
ENDCASE
CASE "W"
TRAN "^M^JBegin your transfer procedure..."
SENDFILE WXMODEM S8
ENDCASE
CASE "X"
TRAN "^M^JBegin your transfer procedure..."
SENDFILE XMODEM S8
ENDCASE
CASE "Y"
TRAN "^M^JBegin your transfer procedure..."
SENDFILE YMODEM S8
ENDCASE
CASE "Z"
TRAN "^M^JBegin your transfer procedure..."
SENDFILE ZMODEM S8
ENDCASE
CASE "K"
TRAN "^M^JBegin your transfer procedure..."
SENDFILE KERMIT S8
ENDCASE
DEFAULT
TRAN "^MInvalid transfer selection"
GOTO EOTransfer
ENDCASE
ENDSWITCH
GOTO EOTransfer
EOTRANSFER:
IF NOT SUCCESS
MESS "^M^JTransfer failed "
ELSE
MESS "^M^JTransfer OK "
ENDIF
GOTO File_Prompt
Filelist:
N10 = 0
FOPENI "BBS-File" TEXT
IF NOT SUCCESS
TRAN "^MNo files are available at this time^M"
GOTO Main_Prompt
ENDIF
FListLoop:
READ S9 80 N19
IF EOF
GOTO FListEnd
ENDIF
IF NOT FIND S9(0:0) "*"
S0 = S9(0:12)
ISFILE S0
IF FAILURE
GOTO FListLoop
ENDIF
ELSE
GOTO FListPrint
ENDIF
IF ZERO N10
TRAN "^M^JName Dated Size Description ^M^J"
TRAN "----------- -------- -------- ----------------------------------------------^M^J"
ENDIF
S9 = S9(0:12) * " " * S9(13:19) * " " * S9(21:27) * " " * S9(28:79)
FListPrint:
TRAN S9
TRAN "^M^J"
N10 = N10+1
GOTO FListLoop
FListEnd:
FCLOSEI
GOTO File_Prompt
Search:
TRAN "^M^JEnter the search string: "
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NULL S9
TRAN "^M^JSearch aborted"
GOTO File_Prompt
ENDIF
S18 = S9
FOPENI "BBS-File" TEXT
IF NOT SUCCESS
TRAN "^MNo files are available at this time^M"
GOTO Main_Prompt
ENDIF
N10 = 0
Search_Loop:
READ S9 80 N19
IF EOF
GOTO Search_End
ENDIF
IF NOT FIND S9(0:0) "*"
S0 = S9(0:12)
ISFILE S0
IF FAILURE
GOTO Search_Loop
ENDIF
ELSE
GOTO Search_Loop
ENDIF
IF NOT FIND S9 S18
GOTO Search_Loop
ENDIF
IF ZERO N10
TRAN "^M^JName Dated Size Description ^M^J"
TRAN "----------- -------- -------- ----------------------------------------------^M^J"
ENDIF
S0 = S9(0:12) * " " * S9(13:19) * " " * S9(21:27) * " " * S9(28:79)
TRAN S0
TRAN "^M^J"
N10 = N10+1
GOTO Search_Loop
Search_End:
IF ZERO N10
TRAN "^M^JNo matches"
ENDIF
FCLOSEI
GOTO File_Prompt
Comment:
SUBDIR S19
CHDIR S2
MESS "^M^JComment requested "
S9 = "Do you wish to leave a comment? "
S8 = "BBS-NoMe"
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
FIND S9 "Y"
IF NOT FOUND
TRAN "OK"
CHDIR S19
GOTO Main_Prompt
ENDIF
FOPENO "BBS-Note" TEXT APPEND
IF NOT SUCCESS
TRAN "Error recording note - please try later^M^J"
CHDIR S19
GOTO Main_Prompt
ENDIF
S9 = "*** Note left by "
CONCAT S9(17) S1
DATE S8
CONCAT S9(25) S8(0:9)
TIME S8 1
CONCAT S9(35) S8(0:7)
WRITE S9
WRITE "!"
TRAN "Each line, as you enter it will be recorded. No edits, yet...^M^J"
TRAN "Enter a line/line(s) of text. A blank line ends the note.^M^J"
GOSUB Copy_Text
FCLOSEO
IF FLAG(0)
GOTO Exit
ENDIF
TRAN "Your note has been recorded - thanks^M^J"
CHDIR S19
GOTO Main_Prompt
Bull_Command:
SUBDIR S19
CHDIR S5
BULL_List:
MESS "^M^JBulletin list "
N10 = 0
FOPENI "BBS-Bull" TEXT
IF NOT SUCCESS
TRAN "^MNo bulletins exist^M"
CHDIR S19
GOTO Main_Prompt
ENDIF
Bull_Loop:
READ S9 80 N19
IF EOF
GOTO Bull_Prompt
ENDIF
IF NOT NULL S9(13:13)
IF NOT FLAG(1)
GOTO BULL_Loop
ENDIF
ENDIF
IF FIND S9(0:0) "*"
GOTO Bull_Loop
ENDIF
S0 = S9(14:25)
ISFILE S0
IF FAILURE
GOTO Bull_Loop
ENDIF
IF ZERO N10
TRAN "^M^JNum Dated Subject ^M^J"
TRAN "----- -------- --------------------------------------------------------------^M^J"
ENDIF
S0 = S9(0:4)*" "*S9(5:12)*" "*S9(26:79)
TRAN S0
TRAN "^M^J"
N10 = N10+1
GOTO Bull_Loop
Bull_Prompt:
FCLOSEI
GOSUB Display_Limit
S9 = "^ML)ist, M)ain, E)xit, or a bulletin number: "
S8 = "BBS-BuMe"
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
IF FIND S9(0:0) "L"
GOTO Bull_List
ENDIF
IF FIND S9(0:0) "M"
CHDIR S19
GOTO Main_Prompt
ENDIF
IF FIND S9(0:0) "E"
TRAN "Ok... bye"
GOTO Exit
ENDIF
FOPENI "BBS-Bull" TEXT
IF NOT SUCCESS
TRAN "^MNo bulletins available^M"
CHDIR S19
GOTO Main_Prompt
ENDIF
S0 = S9
Bull_Scan:
READ S9 80 N19
IF EOF
TRAN "^M^JNo such bulletin!! ^M^J"
FCLOSEI
GOTO Bull_Prompt
ENDIF
IF FIND S9(0:0) "*"
GOTO Bull_Scan
ENDIF
IF NOT NULL S9(13:13)
IF NOT FLAG(1)
GOTO BULL_Scan
ENDIF
ENDIF
S8 = S9(14:25)
ISFILE S8
IF FAILURE
GOTO Bull_Scan
ENDIF
S9 = S9(0:4)
GOSUB Left_Justify
SWITCH S9
CASE S0(0:4)
GOTO Bull_Read
ENDCASE
ENDSWITCH
GOTO Bull_Scan
Bull_Read:
FCLOSEI
MESS "^M^JReading bulletin "
S9 = "^MError opening Bltnfile"
GOSUB Disp_File
GOTO Bull_Prompt
Mail_Command:
MESS "^M^JMail prompt "
SUBDIR S19
CHDIR S4
Mail_Prompt:
GOSUB Display_Limit
S9 = "^MS)can, L)ist, R)ead, W)rite, M)ain or E)xit: "
S8 = "BBS-MeMe"
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
S9 = S9(0:0)
SWITCH S9
CASE "R"
GOTO Read_Msg
ENDCASE
CASE "W"
GOTO Write_msg
ENDCASE
CASE "S"
GOTO Scan_Msg
ENDCASE
CASE "L"
GOTO List_Msg
ENDCASE
CASE "M"
CHDIR S19
GOTO Main_Prompt
ENDCASE
CASE "E"
TRAN "Ok... bye"
GOTO Exit
ENDCASE
ENDSWITCH
TRAN "Invalid selection - try again^M"
GOTO Mail_Prompt
Scan_Msg:
N10 = 0
N11 = 0
FOPENI "BBS-Mail" TEXT
IF NOT SUCCESS
GOTO Scan_Rpt
ENDIF
TRAN "^M Working "
Scan_Loop:
READ S9 80 N19
IF EOF
GOTO Scan_Rpt
ENDIF
S0 = S9(0:7)
SWITCH S0
CASE S1
S0 = S9(25:37)
ISFILE S0
IF SUCCESS
INC N11
ENDIF
ENDCASE
ENDSWITCH
INC N10
N12 = N10/10*10
IF EQ N10 N12
TRAN "."
ENDIF
GOTO Scan_Loop
Scan_Rpt:
IF ZERO N11
TRAN "^MYou have no messages waiting"
ELSE
STRFMT S0 "^MYou have %d message(s) waiting." N11
TRAN S0
ENDIF
FCLOSEI
GOTO Mail_Prompt
List_Msg:
N10 = 0
FOPENI "BBS-Mail" TEXT
IF NOT SUCCESS
TRAN "^MNo mail exists - why not write something?^M"
GOTO Mail_Prompt
ENDIF
List_Loop:
READ S9 80 N19
IF EOF
GOTO List_End
ENDIF
S0 = S9(0:7)
SWITCH S0
CASE S1
ENDCASE
DEFAULT
IF FIND S9(16:16) "P"
GOTO List_Loop
ENDIF
ENDCASE
ENDSWITCH
S0 = S9(25:37)
ISFILE S0
IF FAILURE
GOTO List_Loop
ENDIF
IF ZERO N10
TRAN "^M^JTo From Date Subject^M^J"
TRAN "-------- -------- -------- --------------------------------------------------------------^M^J"
ENDIF
S0 = S9(0:7)*" "*S9(8:15)*" "*S9(17:24)*" "*S9(38:79)
TRAN S0
TRAN "^M^J"
N10 = N10+1
GOTO List_Loop
List_End:
FCLOSEI
GOTO Mail_Prompt
Read_Msg:
FOPENI "BBS-Mail" TEXT
IF NOT SUCCESS
TRAN "^MNo mail exists - why not write something?^M"
GOTO Mail_Prompt
ENDIF
Read_Loop:
READ S9 80 N19
IF EOF
GOTO Read_End
ENDIF
S0 = S9(0:7)
SWITCH S0
CASE S1
SET FLAG(9) ON
ENDCASE
DEFAULT
SET FLAG(9) OFF
IF FIND S9(16:16) "P"
IF STRCMP S9(8:15) S1
SET FLAG(9) ON
ELSE
GOTO Read_Loop
ENDIF
ENDIF
ENDCASE
ENDSWITCH
S0 = S9(25:37)
ISFILE S0
IF FAILURE
GOTO Read_Loop
ENDIF
S8 = S1
SWITCH S8
CASE S9(8:15)
SET FLAG(9) ON
ENDCASE
ENDSWITCH
S8 = S0
S9 = "^MError opening mailfile"
GOSUB Disp_File
IF FLAG(9)
TRAN "^M^MDelete? (Y/N): ^H"
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF FIND S9 "Y"
DELETE S8
TRAN "Message deleted^M^J"
ENDIF
ENDIF
TRAN "^M^MContinue (CR/Y/N): ^H"
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NOT FIND S9 "N"
GOTO Read_Loop
ENDIF
Read_End:
FCLOSEI
GOTO Mail_Prompt
Write_Msg:
TRAN "To: ^H"
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
GOSUB Left_Justify
IF NULL S9
GOTO Mail_Prompt
ENDIF
S10 = S9(0:7)
UPPER S10
TRAN "Subject: ^H"
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
S11 = S9
FOPENO "\HOSTTEMP.TXT" TEXT
IF NOT SUCCESS
TRAN "Error opening file - please try later^M^J"
GOTO Mail_Prompt
ENDIF
S9 = "To: "
CONCAT S9(7) S10
WRITE S9
WRITE "!"
S9 = "From: "
CONCAT S9(7) S1
WRITE S9
WRITE "!"
S9 = "Date: "
DATE S12
CONCAT S9(7) S12
TIME S8 1
CONCAT S9(17) S8
WRITE S9
WRITE "!"
S9 = "Subject: "
CONCAT S9(9) S11
LENGTH S9 N19
WRITE S9 N19
WRITE "!"
WRITE "!"
TRAN "Each line, as you enter it will be recorded. No edits, yet...^M^J"
TRAN "Enter a line/line(s) of text. A blank line ends the text.^M^J"
GOSUB Copy_Text
FCLOSEO
IF FLAG(0)
GOTO Exit
ENDIF
TRAN "Save? (Y/N): ^H"
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
IF NOT FIND S9 "Y"
GOTO Mail_Prompt
ENDIF
TRAN "^MScanning for free slot"
N10 = 0
S0 = S10(0:7)
FOPENI "BBS-Mail" TEXT
IF NOT SUCCESS
GOTO Write_End
ENDIF
Write_Loop:
READ S9 80 N19
IF EOF
GOTO Write_End
ENDIF
SWITCH S0
CASE S9(0:7)
FIND S9(25:37) "." N11
N11 = N11+26
ATOI S9(N11:79) N10
ENDCASE
ENDSWITCH
GOTO Write_Loop
Write_End:
FCLOSEI
TRAN "^M^JPrivate? (Y/N): "
GOSUB Read_Comm
IF FLAG(0)
GOTO Exit
ENDIF
S13 = " "
IF FIND S9 "Y"
S13 = "P"
ENDIF
N10 = N10+1
S0 = S0&"."&N10
S9 = "COPY \HOSTTEMP.TXT " * S0
DOS S9
FOPENO "BBS-Mail" TEXT APPEND
WRITE S10 8
WRITE S1 8
WRITE S13 1
WRITE S12 8
WRITE S0 13
WRITE S11 50
WRITE "!"
FCLOSEO
GOTO Mail_Prompt
Register:
MESS "^M^JRegistration requested "
S9 = "Do you wish to register? "
S8 = "BBS-ReMe"
GOSUB Disp_File
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
FIND S9 "Y"
IF NOT FOUND
TRAN "OK - bye"
RETURN
ENDIF
TRAN "Enter your full name: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
S18 = S9
TRAN "Enter your street address: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
S17 = S9
TRAN "Enter your city/state and zip: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
S16 = S9
TRAN "Enter a area code and phone number where^M^J"
TRAN "you may be reached: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
S15 = S9
Reg_ID:
TRAN "Enter the ID (1-8 chars) you wish to use: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
IF FIND S9(0:7) "."
TRAN "ID may not contain '.'s^M^J"
GOTO Reg_ID
ENDIF
IF FIND S9(0:7) ","
TRAN "ID may not contain ','s^M^J"
GOTO Reg_ID
ENDIF
IF FIND S9(0:7) "\"
TRAN "ID may not contain '\'s^M^J"
GOTO Reg_ID
ENDIF
IF FIND S9(0:7) "/"
TRAN "ID may not contain '/'s^M^J"
GOTO Reg_ID
ENDIF
S14 = S9(0:7)
Reg_Pass:
TRAN "Enter the password (1-8 chars) you wish to use: "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
IF NULL S9(0:7)
TRAN "You must have a password^M^J"
GOTO Reg_Pass
ENDIF
S14 = S14 & ";" &S9(0:7)
TRAN "^M^JRepeating your entry...^M^J"
TRAN S18
TRAN "^M^J"
TRAN S17
TRAN "^M^J"
TRAN S16
TRAN "^M^J"
TRAN S15
TRAN "^M^J"
TRAN S14
TRAN "^M^JIs this correct? "
GOSUB Read_Comm
IF FLAG(0)
RETURN
ENDIF
FIND S9 "Y"
IF NOT FOUND
GOTO Register
ENDIF
FOPENO "BBS-Note" TEXT APPEND
IF NOT SUCCESS
TRAN "Error recording registration - please call back^M^J"
RETURN
ENDIF
S9 = "*** Registration requested: "
DATE S1
CONCAT S9(27) S1
TIME S1 1
CONCAT S9(38) S1
WRITE S9
WRITE "!"
WRITE S18 80
WRITE "!"
WRITE S17 80
WRITE "!"
WRITE S16 80
WRITE "!"
WRITE S15 80
WRITE "!"
WRITE S14 80
WRITE "!"
TRAN "Your request will be processed by the SYSOP^M^J"
TRAN "Thanks for calling...^M^J"
FCLOSEO
RETURN
AutoBaud:
FIND S9 "1200"
IF FOUND
SET BAUD 1200
RETURN
ENDIF
FIND S9 "2400"
IF FOUND
SET BAUD 2400
RETURN
ENDIF
SET BAUD 300
RETURN